perm filename M873YD.PAL[KL,SYS]3 blob
sn#368258 filedate 1978-07-20 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00011 00003 .TITLE BOOTSTRAP LOADER M873-YD
C00024 ENDMK
C⊗;
comment ⊗
*173000/ 33727
173002/ -210 =177570
173004/ 1
173006/ 1010
173010/ 13707
173012/ -210 =177570
173014/ -66074 =111704
173016/ 5001
173020/ 5005
173022/ 424
173024/ -5000 =173000
173026/ 340
173030/ 13701
173032/ -210 =177570
173034/ -71477 =106301
173036/ -55077 =122701
173040/ 340
173042/ -76374 =101404
173044/ -55077 =122701
173046/ 60
173050/ -76777 =101001
173052/ 5001
173054/ 301
173056/ 42701
173060/ -10 =177770
173062/ 13705
173064/ -210 =177570
173066/ 5004
173070/ -72073 =105705
173072/ -77271 =100507
173074/ 12700
173076/ 5
173100/ 12702
173102/ -400 =177400
173104/ 12703
173106/ 4003
173110/ 301
173112/ 50103
173114/ 50100
173116/ 12701
173120/ -434 =177344
173122/ 12706
173124/ 24
173126/ 5705
173130/ -77374 =100404
173132/ 5306
173134/ -77776 =100002
173136/ 0
173140/ 770
173142/ 5
173144/ 10341
173146/ 5711
173150/ -77402 =100376
173152/ 5721
173154/ 5761
173156/ -4 =177774
173160/ -77416 =100362
173162/ 10211
173164/ 10041
173166/ -72067 =105711
173170/ -77402 =100376
173172/ 5721
173174/ -77024 =100754
173176/ 5741
173200/ -72767 =105011
173202/ -55100 =122700
173204/ 5
173206/ 1001
173210/ 137
173212/ 0
173214/ 776
173216/ 10037
173220/ 40
173222/ 402
173224/ -5000 =173000
173226/ 340
173230/ 10700
173232/ 410
173234/ 12700
173236/ 4015
173240/ 12702
173242/ -70000 =110000
173244/ 12703
173246/ 3
173250/ 5005
173252/ 721
173254/ 10137
173256/ 42
173260/ 12701
173262/ 44
173264/ 10221
173266/ 10321
173270/ 10421
173272/ 10521
173274/ 10621
173276/ 10021
173300/ 160
173302/ 2
173304/ -66074 =111704
173306/ 5005
173310/ 5001
173312/ 12700
173314/ 34400
173316/ 12702
173320/ -400 =177400
173322/ 12703
173324/ 626
173326/ 50100
173330/ 12701
173332/ -1100 =176700
173334/ 5
173336/ 10006
173340/ 42706
173342/ -10 =177770
173344/ 10661
173346/ 10
173350/ 32711 =32711
173352/ 4000
173354/ 1767
173356/ 12721
173360/ 21
173362/ 10306
173364/ 42706
173366/ -2000 =176000
173370/ 10661
173372/ 32
173374/ 10306
173376/ -77775 =100003
173400/ 12761
173402/ 10000
173404/ 30
173406/ 6206
173410/ 6206
173412/ -72772 =105006
173414/ -27772 =150006
173416/ -71772
173420/ -71572 =106206
173422/ -71572 =106206
173424/ 10661
173426/ 4
173430/ 10211
173432/ 10006
173434/ -72772 =105006
173436/ 306
173440/ 10641
173442/ -72067 =105711
173444/ -77402 =100376
173446/ 32711
173450/ 60000
173452/ 1330
173454/ 32761
173456/ -40000 =140000
173460/ 12
173462/ 1324
173464/ 22706
173466/ 71
173470/ 1250
173472/ 22737
173474/ 240
173476/ 0
173500/ 1643
173502/ 0
173504/ 641
173506/ 10037
173510/ 40
173512/ 10700
173514/ 657
173516/ 12700
173520/ 30500
173522/ 12702
173524/ -70000 =110000
173526/ 12703
173530/ 32631
173532/ 676
173534/ 10037
173536/ 40
173540/ 10700
173542/ 644
173544/ 5005
173546/ 12501
173550/ 12503
173552/ 12504
173554/ 11500
173556/ 12715
173560/ 340
173562/ 5745
173564/ 12702
173566/ -3440 =174340
173570/ 10715
173572/ 10506
173574/ 62702
173576/ 40
173600/ -72076 =105702
173602/ -77010 =100770
173604/ 32762
173606/ 4000
173610/ 34
173612/ 1770
173614/ 26217
173616/ 14
173620/ 1365
173622/ 5725
173624/ 10015
173626/ 10445
173630/ 10345
173632/ 10145
173634/ 12700
173636/ 130
173640/ 10204
173642/ 12420
173644/ 22700
173646/ 160
173650/ -76404 =101374
173652/ 10201
173654/ 62701
173656/ 32
173660/ 12721
173662/ 100
173664/ 5012
173666/ 5062
173670/ 20
173672/ 32711
173674/ 4000
173676/ 1775
173700/ 32762
173702/ 26
173704/ 36
173706/ 1403
173710/ 12711
173712/ 400
173714/ 0
173716/ 12762
173720/ 100
173722/ 32
173724/ 5062
173726/ 22
173730/ 12762
173732/ -70400
173734/ 16
173736/ 32711
173740/ 4000
173742/ 1775
173744/ -45067
173746/ 202
173750/ 1775
173752/ -77775 =100003
173754/ 22715
173756/ 240
173760/ 1403
173762/ 12711
173764/ 400
173766/ 0
173770/ 12762
173772/ 100
173774/ 32
173776/ 115
174000/ 200
⊗
.TITLE BOOTSTRAP LOADER M873-YD
;STARTUP OFFSETS
;SWITCH ADDRESS
; 1 000 SWITCH
; 2 304 RP04
; 3 014 DECTAPE
; 4 534 POWER
COMMENT ⊗
If switch 1 is pressed, the switch register is examined. If the low bit is off
the machine transfers to the byte address in the switch register. If the low
bit is on the format of the switch register is as follows:
Bits Function
15 Try indefinitely
10-8 Drive number
7 Use RP04 instead of DECTAPE
0 Must be on to decode this way
⊗
R0=%0
R1=%1
R2=%2
R3=%3
R4=%4
R5=%5
SP=%6
PC=%7
;TC11 REGISTERS
TCST=177340
TCCM=177342
TCWC=177344
TCBA=177346
;RP04 REGISTERS
RPCS1=176700
RPWC=176702
RPBA=176704
RPDA=176706
RPCS2=176710
RPDS=176712
RPER1=176714
RPAS=176716
RPLA=176720
RPDB=176722
RPMR=176724
RPDT=176726
RPSN=176730
RPOF=176732
RPDC=176734
RPCC=176736
RPER2=176740
RPER3=176742
RPEC1=176744
RPEC2=176746
;DTE REGISTERS
DLYCNT=174400
DEXWD3=174402
TENAD1=174410
TENAD2=174412
TO10BC=174414
DIAG1=174430
DIAG2=174432
STATUS=174434
DIAG3=174436
SWREG=177570
;Here when switch 1 is pressed (SWITCH REG)
.=173000
SW1GO: BIT @#SWREG,#1
BNE SW1ODD ;BRANCH IF BIT 0 ON IN SWITCH REGISTER
MOV @#SWREG,PC ;JUMP TO ADDRESS IN SWITCH REGISTER
;Here when switch 3 is pressed (DECTAPE)
.=173014
SW3GO: MOVB (PC),R4 ;R4 ← 1
CLR R1 ;ASSUME DRIVE ZERO
CLR R5 ;SIMULATE ZERO SWITCHES
BR SW1OD2
.=173024
173000 ;CAUSE DC LO TRAP TO TRANSFER TO ROM
340
.=173030
SW1ODD: MOV @#SWREG,R1
ASLB R1
CMPB #340,R1
BLOS SW1OD1
CMPB #60,R1
BHI SW1OD1
CLR R1 ;ASSUME DRIVE ZERO
SW1OD1: SWAB R1 ;GET DRIVE NUMBER INTO LOW BYTE
BIC #177770,R1 ;KEEP LOW 3 BITS (DECTAPE DRIVE NUMBER)
MOV @#SWREG,R5
CLR R4
TSTB R5
BMI SW2GO0 ;BRANCH IF SWREG BIT 7 IS ON (RUN THE DISK)
SW1OD2: MOV #5,R0 ;COMMAND FOR TCCM:DRIVE=0,RDATA,FORWARD,DO
MOV #-400,R2 ;SET UP WORD COUNT REGISTER
MOV #4003,R3 ;COMMAND FOR TCCM:DRIVE=0,RNUM,REVERSE,DO
SWAB R1 ;PUT DRIVE NUMBER IN HIGH BYTE
BIS R1,R3 ;OR DRIVE NUMBER INTO REVERSE COMMAND
BIS R1,R0 ;OR DRIVE NUMBER INTO READ FORWARD COMMAND
SW1OD5: MOV #TCCM+2,R1 ;AFTER AUTO DECREMENT WILL POINT AT TCCM
SW1OD3: MOV #24,SP ;USE SP AS A COUNTER
SW1OD4: TST R5
BMI SPIN ;BRANCH IF SWREG BIT 15 IS ON (TRY INDEFINITELY)
DEC SP ;BUMP COUNT
BPL SPIN ;BRANCH IF STILL NON-NEGATIVE
HALT
BR SW1OD3
;START RUNNING THE TC11 DECTAPE DRIVE
SPIN: RESET ;CAUSES TCBA TO BE SET TO ZERO
MOV R3,-(R1) ;START SPINNING BACKWARDS READING BLOCK NUMS
SPINL1: TST (R1) ;WAIT FOR AN ERROR (SHOULD RUN INTO THE
BPL SPINL1 ; FRONT END ZONE EVENTUALLY)
TST (R1)+ ;POINT AT TCWC
TST -4(R1) ;LOOK AT END ZONE BIT IN TCST
BPL SW1OD4 ;IF IT IS OFF TRY AGAIN (GOT SOME OTHER ERROR)
MOV R2,(R1) ;STORE WORD COUNT IN TCWC
MOV R0,-(R1) ;READ FORWARD CMD, LEAVE R1 POINTING AT TCCM
SPINL2: TSTB (R1) ;WAIT FOR READY
BPL SPINL2
TST (R1)+ ;TEST ERROR BIT, POINT R1 AT TCWC
BMI SW1OD4 ;BRANCH ON ERROR
TST -(R1) ;BUMP BACK TO TCCM
CLRB (R1) ;CLEAR FUNCTION, DO, INT ENB
CMPB #5,R0 ;SEE IF LAST COMMAND WAS FORWARD READ
BNE HLTLUP ;IF NOT THEN HALT
GOTHER: JMP @(PC)+ ;GO TO 0 ABSOLUTE (WHERE WE JUST READ 400 WDS INTO)
HLTLUP: 0
BR HLTLUP ;STAY HALTED IF PRESS CONTINUE
MOV R0,@#40 ;173216
BR UTIL
.=173224
173000 ;CAUSE DC LO TRAP TO TRANSFER TO RAM
340
.=173230
UTIL: MOV PC,R0
BR UTIL1 ;SIMULATE JSP R0,UTIL1
MOV #4015,R0
MOV #110000,R2
MOV #3,R3
CLR R5
BR SW1OD5
UTIL1: MOV R1,@#42 ;SAVE R1 IN 42
MOV #44,R1
MOV R2,(R1)+ ;SAVE R2 IN 44
MOV R3,(R1)+ ;SAVE R3 IN 46
MOV R4,(R1)+ ;SAVE R4 IN 50
MOV R5,(R1)+ ;SAVE R5 IN 52
MOV SP,(R1)+ ;SAVE SP IN 54
MOV R0,(R1)+ ;SAVE R0 (RETURN ADDRESS) IN 56
JMP 2(R0) ;RETURN FROM SIMULATED JSP R0,UTIL1
;R3 AND R0 SPECIFY THE DISK ADDRESS.
;R3 BITS
; 15 ON MEANS 16 BIT / WORD FORMAT
; 0-8 CYLINDER
;10-14 TRACK
;R0 BITS
; 3-7 SECTOR ADDRESS
; 8-15 COMMAND (STORED IN LOW BYTE OF RPCS1)
;Here when switch 2 pressed (RP04)
.=173304
SW2GO: MOVB (PC),R4 ;R4 ← 5
CLR R5
CLR R1
SW2GO0: MOV #34400,R0 ;71,,SECTOR 0 (71 = READ DATA COMMAND)
MOV #-400,R2 ;WORD COUNT
MOV #626,R3 ;CYLINDER 404 DECIMAL,TRACK 0,18 BIT FORMAT
BIS R1,R0 ;SET DRIVE NUMBER IN R0
SW2GO1: MOV #RPCS1,R1
SW2GO2: RESET
MOV R0,SP
BIC #177770,SP
MOV SP,10(R1) ;SET DRIVE NUMBER IN RPCS2
BIT #4000,(R1) ;WAIT UNTIL DRIVE AVAILABLE
BEQ SW2GO2 ; ON THIS CONTROLLER
MOV #21,(R1)+ ;GIVE "READ-IN-PRESET" COMMAND
MOV R3,SP
BIC #176000,SP
MOV SP,32(R1) ;SETUP DESIRED CYLINDER ADDRESS
MOV R3,SP
BPL SW2GO3 ;BRANCH IF R3 BIT 15 IS OFF
MOV #10000,30(R1) ;SET 16 BIT / WORD FORMAT
SW2GO3: ASR SP
ASR SP
CLRB SP ;ALSO CLEARS C BIT
BISB R0,SP
RORB SP ;FLUSH LOW BIT AND ZERO HIGH BIT
ASRB SP
ASRB SP ;GET SECT ADDR TO BITS 0-4
MOV SP,4(R1) ;SET TRACK AND SECTOR ADDRESSES
MOV R2,(R1) ;SET WORD COUNT
MOV R0,SP
CLRB SP
SWAB SP
MOV SP,-(R1) ;GIVE COMMAND FROM LH OF R0
SW2GO4: TSTB (R1)
BPL SW2GO4 ;WAIT FOR READY
BIT #60000,(R1)
BNE SW2GO2 ;TRY AGAIN IF ERRORS
BIT #140000,12(R1)
BNE SW2GO2 ;TRY AGAIN IF ATTENTION OR ERRORS
CMP #71,SP ;DID WE JUST GIVE A READ COMMAND?
BNE HLTLUP ;NO, LOSE
CMP #240,@#0 ;IS FIRST WORD READ A NOP?
BEQ GOTHER ;YES, GO DO IT
HALT ;NO, LOSE. IF YOU CONTINUE....
BR GOTHER ;....THEN START UP AT ZERO
.=173506
UTIL2: MOV R0,@#40
MOV PC,R0 ;SIMULATE JSP R0,UTIL1
BR UTIL1
MOV #30500,R0
MOV #110000,R2
MOV #32631,R3
BR SW2GO1
;Here when switch 4 pressed (done by KL10)
.=173534
SW4GO: MOV R0,@#40 ;SAVE R0 IN ABSOLUTE 40
MOV PC,R0
BR UTIL1 ;SIMULATE JSP R0,UTIL1 (SAVE REGS IN LOW CORE)
CLR R5
MOV (R5)+,R1 ;C(0) → R1
MOV (R5)+,R3 ;C(2) → R3
MOV (R5)+,R4 ;C(4) → R4
MOV (R5),R0 ;C(6) → R0, R5 = 6
MOV #340,(R5) ;340 → C(6) (SET UP ERROR PS)
TST -(R5) ;R5 = 4
SW4GO1: MOV #DLYCNT-40,R2 ;R2 = DLYCNT-40
MOV PC,(R5) ;STORE ADDR OF NEXT INSTR AS ERROR PC ( → C(4))
MOV R5,SP ;SP = 4
SW4GO2: ADD #40,R2 ;R2 = DLYCNT OF NEXT DTE
TSTB R2 ;OUT OF DTES YET?
BMI SW4GO1 ;YES, START OVER FROM DTE0
BIT #4000,34(R2) ;LOOK AT 10 REQ INT (1) IN DTE STATUS REGISTER
BEQ SW4GO2 ;THIS ISN'T THE ONE, TRY THE NEXT DTE
CMP 14(R2),(PC) ;COMPARE TO10BC WITH 14 (ASSUMING DEST IS DONE 1ST)
BNE SW4GO2 ;NOT THIS DTE
TST (R5)+ ;R5 = 6
MOV R0,(R5) ;R0 → C(6)
MOV R4,-(R5) ;R4 → C(4)
MOV R3,-(R5) ;R3 → C(2)
MOV R1,-(R5) ;R1 → C(0) R5 = 0
MOV #130,R0
MOV R2,R4 ;R4 = ADDRESS OF APPROPRIATE DTE
SW4GO3: MOV (R4)+,(R0)+ ;COPY DTE REGISTERS TO 130
CMP #160,R0
BHI SW4GO3
MOV R2,R1
ADD #32,R1 ;POINTS AT DIAG2
MOV #100,(R1)+ ;RESET THAT DTE, R1 POINTS AT STATUS
CLR (R2) ;CLEAR DELAY COUNT
CLR 20(R2) ;CLEAR TO 10 ADDRESS
SW4GO4: BIT #4000,(R1) ;LOOK AT 10 REQ INT (1) IN STATUS
BEQ SW4GO4 ;WAIT UNTIL IT IS ON
BIT #26,36(R2) ;LOOK AT UNIBUS PARITY ERROR BITS IN DIAG3
BEQ SW4GO5
MOV #400,(R1) ;SET REQ 10 INT
HALT
SW4GO5: MOV #100,32(R2) ;RESET DTE AGAIN
CLR 22(R2) ;CLEAR TO 11 ADDRESS
MOV #107400,16(R2) ;START TRANSFER OF 400 WORDS, I BIT ON
SW4GO6: BIT #4000,(R1) ;WAIT FOR 10 REQ INT (1)
BEQ SW4GO6
SW4GO7: BITB #202,(R1) ;LOOK AT TO11 ERR AND NORM TERM
BEQ SW4GO7 ;WAIT FOR ONE TO COME ON
BPL SW4GO8 ;BRANCH IF NORM TERM CLEAR
CMP #NOP,(R5) ;MAKE SURE FIRST WORD TRANSFERRED WAS A NOP
BEQ SW4GO9
SW4GO8: MOV #400,(R1) ;SET REQ 10 INT
HALT
SW4GO9: MOV #100,32(R2) ;RESET AGAIN JUST TO MAKE SURE
JMP (R5) ;TRANSFER TO 0
.END